iT邦幫忙

0

[Golang]同步工具-sync包的RWMutex-心智圖總結

  • 分享至 

  • xImage
  •  

1. RWMutex,讀寫鎖,又稱讀/寫互斥鎖。
讀寫鎖是把對共享資源的"讀操作"和"寫操作"分別對待。
相比於互斥鎖,讀寫鎖可以實現更細緻的訪問控制。

2. sync.RWMutex的類型和方法。
一個讀寫鎖中包含兩個鎖,讀鎖和寫鎖。
sync.RWMutex類型中的Lock方法和Unlock方法,分別用於對寫鎖進行鎖定和解鎖。
而sync.RWMutex類型的RLock方法和RUnlock方法,分別用於對讀鎖進行鎖定和解鎖。

3. 使用讀/寫互斥鎖的規則
a. 在寫鎖已被鎖定的情況下,再試圖鎖定寫鎖,會阻塞當前的goroutine。
b. 在寫鎖已被鎖定的情況下,試圖鎖定讀鎖,也會阻塞當前的goroutine。
c. 在讀鎖已被鎖定的情況下,試圖鎖定寫鎖,會阻塞當前的goroutine。
d. 在讀鎖已被鎖定的情況下,再試圖鎖定讀鎖,並不會阻塞當前的goroutine。

對於某個受到讀寫鎖保護的共享資源,多個寫操作不能同時進行,
寫操作和讀操作,也不能同時進行,但多個讀操作卻可以同時進行。

解鎖"讀寫鎖中未被鎖定的寫鎖",會立即引發panic。對於讀鎖也是如此。
並且此種panic是不可恢復的。

https://ithelp.ithome.com.tw/upload/images/20201118/20131728RieOhOOyCG.png

https://ithelp.ithome.com.tw/upload/images/20201118/20131728CHQSqlxiOd.png
參考來源:
郝林-Go语言核心36讲
https://github.com/hyper0x/Golang_Puzzlers
https://golang.org/pkg/cmd/go/internal/test/


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言